/**
 * Created with PyCharm.
 * User: xiaowei
 * Date: 14-8-20
 * Time: 下午5:58
 * To change this template use File | Settings | File Templates.
 */
dojo.require("dijit.layout.BorderContainer");
dojo.require("dijit.layout.ContentPane");
dojo.require("esri.map");
dojo.require("esri.layers.agstiled");
dojo.require("esri.toolbars.draw");
dojo.require("dijit.dijit"); // optimize: load dijit layer
dojo.require("esri.undoManager");
dojo.provide("myModules.customoperation");
var mymap,toolbar,reExtent,boundary_List,undoManager,resizeTimer;

//撤销 重做 申明
dojo.declare("myModules.customoperation.Add", esri.OperationBase, {
    label: "Add Graphic",
    constructor: function ( /*graphicsLayer, addedGraphic*/ params) {
        params = params || {};
        if (!params.graphicsLayer) {
            console.error("graphicsLayer is not provided");
            return;
        }
        this.graphicsLayer = params.graphicsLayer;

        if (!params.addedGraphic) {
            console.error("no graphics provided");
            return;
        }
        this._addedGraphic = params.addedGraphic;
    },

    performUndo: function () {
        this.graphicsLayer.remove(this._addedGraphic);
    },

    performRedo: function () {
        this.graphicsLayer.add(this._addedGraphic);
    }
});
//初始化地图
function init(){
    undoManager = new esri.UndoManager();
    mymap = new esri.Map("map");
    //加载天地图
    dojo.declare("TianDiTiledMapServiceLayer", esri.layers.TiledMapServiceLayer, {
        constructor: function() {
            this.spatialReference = new esri.SpatialReference({ wkid:4326 });
            this.initialExtent = (this.fullExtent =
                new esri.geometry.Extent(-180.0, -90.0, 180.0, 90.0, this.spatialReference));
            this.tileInfo = new esri.layers.TileInfo({
                "rows" : 256,
                "cols" : 256,
                "compressionQuality" : 0,
                "origin" : { "x" : -180,"y" : 90},
                "spatialReference" : {"wkid" : 4326},
                "lods" : [
                    {"level" : 0, "resolution" : 0.703125, "scale" : 295497593.05875},
                    {"level" : 1, "resolution" : 0.3515625, "scale" : 147748796.529375},
                    {"level" : 2, "resolution" : 0.17578125, "scale" : 73874398.264688},
                    {"level" : 3, "resolution" : 0.087890625, "scale" : 36937199.132344},
                    {"level" : 4, "resolution" : 0.0439453125, "scale" : 18468599.566172},
                    {"level" : 5, "resolution" : 0.02197265625, "scale" : 9234299.783086},
                    {"level" : 6, "resolution" : 0.010986328125, "scale" : 4617149.891543},
                    {"level" : 7, "resolution" : 0.0054931640625, "scale" : 2308574.945771},
                    {"level" : 8, "resolution" : 0.00274658203125, "scale" : 1154287.472886},
                    {"level" : 9, "resolution" : 0.001373291015625, "scale" : 577143.736443},
                    {"level" : 10, "resolution" : 0.0006866455078125, "scale" : 288571.86822143558},
                    {"level" : 11, "resolution" : 0.00034332275390625, "scale" : 144285.93411071779},
                    {"level" : 12, "resolution" : 0.000171661376953125, "scale" : 72142.967055358895},
                    {"level" : 13, "resolution" : 8.58306884765625e-005, "scale" : 36071.483527679447},
                    {"level" : 14, "resolution" : 4.291534423828125e-005, "scale" : 18035.741763839724},
                    {"level" : 15, "resolution" : 2.1457672119140625e-005, "scale" : 9017.8708819198619},
                    {"level" : 16, "resolution" : 1.0728836059570313e-005, "scale" : 4508.9354409599309},
                    {"level" : 17, "resolution" : 5.3644180297851563e-006, "scale" : 2254.4677204799655}]
            });
            this.loaded = true;
            this.onLoad(this);
        },
        getTileUrl: function(level, row, col) {
            var levelMap = "";
            if(level<10){
                levelMap = "A0512_EMap";
            }else if(level<12){
                levelMap = "B0627_EMap1112";
            }else if(level<18){
                levelMap = "siwei0608";
            }
            return "http://t1.tianditu.cn/DataServer?T=vec_c&"+levelMap+"&X=" + col + "&Y=" + row + "&L=" + (level*1+1);
        }
    });
    //文字标注
    dojo.declare("TianDiBiaoZhuMapServiceLayer", TianDiTiledMapServiceLayer, {
        getTileUrl: function(level, row, col) {
            return "http://t1.tianditu.cn/DataServer?T=cva_c&X=" + col + "&Y=" + row + "&L=" + (level*1+1);
        }
    });
    //影像地图
    dojo.declare("TianDiYXMapServiceLayer", TianDiTiledMapServiceLayer, {
        getTileUrl: function(level, row, col) {//wmts
            return "http://t1.tianditu.cn/DataServer?T=img_c&X=" + col + "&Y=" + row + "&L=" + (level*1+1);
        }
    });

    //加载天地图结束

    dojo.connect(mymap, 'onLoad', function(theMap) {
        //resize the map when the browser resizes
        dojo.connect(dijit.byId('map'), 'resize', map,map.resize);
    });

    dojo.connect(mymap, "onLoad", loadPoint);
    dojo.connect(mymap, "onExtentChange", showExtent);  //
    //configure map pan animation to be slower
    esri.config.defaults.map.panDuration = 1000; //time in milliseconds; default panDuration:250
    esri.config.defaults.map.panRate = 50; //refresh rate of zoom animation; default panRate:25
    mymap.addLayer(new TianDiTiledMapServiceLayer());
    mymap.addLayer(new TianDiYXMapServiceLayer());
    mymap.addLayer(new TianDiBiaoZhuMapServiceLayer());

    mymap.resize();//
    mymap.reposition();   //复位
    var point = $("#rangePoint");
   
    reExtent = new esri.geometry.Extent({"xmin":118.754667,"ymin":32.170577,"xmax":118.98104,"ymax":32.219344,"spatialReference":{"wkid":102100}});


    mymap.setExtent(reExtent);//区域范围
}
dojo.addOnLoad(init);//调用init
//init();

function showExtent(extent) {
    $("#info").attr("XMin",extent.xmin.toFixed(2) );
    $("#info").attr("YMin",extent.ymin.toFixed(2) );
    $("#info").attr("XMax",extent.xmax.toFixed(2) );
    $("#info").attr("YMax",extent.ymax.toFixed(2) );
}


// init ...................

function loadPoint(){

    if(!_geoPoints){
        return false;
    }

    var _color = {
        solidColor:[0,187,255],
        fillColor:[0,187,255,255],
        fill_color:[0,187,255,64]
    }
    var myPolygon = {
        "attributes":{
            "name":''
        },
        "geometry":{
            "rings":[_geoPoints],
            "spatialReference": { "wkid": 102100 }
        },
        "symbol":{
            "color":_color.fill_color,
            "outline":{
                "color":_color.fillColor,
                "width":2,
                "type":"esriSLS",
                "style":"esriSLSSolid"
            },
            "type":"esriSFS",
            "style":"esriSFSSolid"
        }
    };

    var gra = new esri.Graphic(myPolygon);
    mymap.graphics.add(gra);
}

